//
//  NewsView.m
//  SDSY
//
//  Created by 蓝布鲁 on 2017/4/27.
//  Copyright © 2017年 蓝布鲁. All rights reserved.
//

#import "NewsView.h"
#import "NewsTableViewCell.h"
#import "UserInfoModel.h"

@interface NewsView()<UITableViewDataSource, UITableViewDelegate>

// 视图
@property (nonatomic,retain)UITableView *tableView;

// 数据
@property (nonatomic, retain)NSMutableArray *dataArray;         // 资讯模型数组
@property (nonatomic,assign) NSInteger page;

@property (nonatomic,retain)NSString *urlString;

@end

@implementation NewsView

-(instancetype)initWithType:(NewsType)type{
    if (self = [super init]) {
        // 设置tableView
        [self setupTableView];
        
        // 设置请求url
        if (type == ActivityType) {
            self.urlString = @"SDSY/getNews";
        }else {
            self.urlString = @"SDSY/getAnnounce";
        }
        
        // 网络请求
        [self.tableView.mj_header beginRefreshing];
    }
    return self;
}

-(void)setFrame:(CGRect)frame {
    super.frame = frame;
    self.tableView.frame = self.bounds;
}

#pragma mark - 自定义方法
// 设置tableView
-(void)setupTableView {
    // 初始化tableView
    self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.tableView.tableFooterView = [[UIView alloc] init];
    [self addSubview:self.tableView];
    
    // 网络请求
    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        // 4.3获取近期活动属性
        self.page = 0;
        [self updateRecentActivityPage:self.page getCount:6];
        
    }];
    [self.tableView.mj_header beginRefreshing];
    
    self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
        // 上拉加载近期活动
        self.page++;
        [self updateRecentActivityPage:self.page getCount:6];
    }];
}

// 如果请求失败,HUD显示错误,tableVIew刷新空数据,foot提示没有数据
- (void)updateFailed {
    [SVProgressHUD showfailed];
    [self.tableView.mj_footer endRefreshingWithNoMoreData];
    [self.tableView.mj_header endRefreshing];
    [self.tableView reloadData];
}

#pragma mark - 网络请求
// 获取近期活动属性
-(void)updateRecentActivityPage:(NSInteger)page getCount:(NSInteger)count {
    // 如果下拉刷新，则初始化模型数组
    if (page == 0) {
        self.dataArray = [[NSMutableArray alloc] init];
    }
    
    
    
    // 初始化请求参数,按时间降序请求近期活动
    NSDictionary *paramters = @{@"s_id": [UserInfoModel shareInstance].stu_id, @"page": @(page), @"count": @(count)};
    
    // 网络请求
    [[NetworkTool shareInstance] requireMethodType:POSTType
                                         URLString:self.urlString
                                        parameters:paramters
                                           success:^(NSDictionary *respondDictionary) {
                                               // 1.储存数据
                                               for (NSDictionary *dic in respondDictionary[@"News"]) {
                                                   NewsModel *model = [[NewsModel alloc] initWithDictionary:dic];
                                                   [self.dataArray addObject:model];
                                               }
                                               [self.tableView reloadData];
                                               
                                               // 2.检查是否正常加载
                                               if ([respondDictionary[@"News"] count] < count) {
                                                   // 没有更多数据
                                                   [self.tableView.mj_footer endRefreshingWithNoMoreData];
                                               }else {
                                                   // 正常结束刷新
                                                   [self.tableView.mj_footer endRefreshing];
                                               }
                                               [self.tableView.mj_header endRefreshing];
                                           } failure:^(NSError *error) {
                                               
                                               [self updateFailed];
                                           }];
}





#pragma mark - TableView回调方法
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.dataArray.count;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return  [tableView cellHeightForIndexPath:indexPath model:self.dataArray[indexPath.row] keyPath:@"newsmodel" cellClass:[NewsTableViewCell class] contentViewWidth:SCREEN_WIDTH];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NewsTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"CELLID"];
    if (cell == nil) {
        cell = [[NewsTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CELLID"];
        
        
    }
    cell.newsmodel=self.dataArray[indexPath.row];
    return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:true];
    
}

@end
